package com.jr.controller;

import com.jr.pojo.ParkingRecords;
import com.jr.pojo.Vehicles;
import com.jr.service.TempEntryService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 临时车位入口管理控制器
 */
@RestController
@RequestMapping("/api/temp-entry")
public class TempEntryController {
    
    @Resource
    private TempEntryService tempEntryService;
    
    /**
     * 查询status=0且space=0的临时空闲车位数量
     * @return 包含临时空闲车位数量的Map对象
     */
    @GetMapping("/available-count")
    public Map<String, Object> getAvailableTempSpacesCount() {
        Integer count = tempEntryService.countAvailableTempSpaces();
        Map<String, Object> result = new HashMap<>();
        result.put("availableCount", count);
        return result;
    }
    
    /**
     * 获取status=0且space=0的随机一个临时空闲车位的code和id（不重复返回相同id）
     * @return 包含code和id的Map对象，如果没有可用车位则返回提示信息
     */
    @GetMapping("/random-space")
    public Map<String, Object> getRandomAvailableTempSpace() {
        Map<String, Object> result = tempEntryService.findRandomAvailableTempSpace();
        if (result == null) {
            Map<String, Object> errorResult = new HashMap<>();
            errorResult.put("success", false);
            errorResult.put("message", "暂无可用的临时车位");
            return errorResult;
        }
        result.put("success", true);
        return result;
    }
    
    /**
     * 创建临时停车记录
     * @param plateNumber 车牌号
     * @param ownerName 车主姓名
     * @param phone 联系电话
     * @param parkingSpaceId 停车场ID
     * @param createdBy 用户ID
     * @return 操作结果
     */
    @PostMapping("/create-entry")
    public boolean createTempEntry(
            @RequestParam String plateNumber,
            @RequestParam String ownerName,
            @RequestParam String phone,
            @RequestParam Integer parkingSpaceId,
            @RequestParam Integer createdBy) {
        
        // 创建Vehicles对象
        Vehicles vehicles = new Vehicles();
        vehicles.setPlateNumber(plateNumber);
        vehicles.setOwnerName(ownerName);
        vehicles.setPhone(phone);
        
        // 创建ParkingRecords对象
        ParkingRecords parkingRecords = new ParkingRecords();
        parkingRecords.setParkingSpaceId(parkingSpaceId);
        parkingRecords.setCreatedBy(createdBy);

        
        // 调用Service层方法，parkingSpaceId作为id参数传入
        return tempEntryService.createTempEntry(parkingRecords, vehicles, parkingSpaceId);
    }
}